package com.bjx.demo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bjx.api.flow.domain.vo.FlowDisposeVO;
import com.bjx.demo.domain.query.VacationQuery;
import com.bjx.demo.domain.vo.VacationVO;

/**
 * @desc: 请假信息服务接口
 * @author: liushuai
 * @date: 2022/10/20
 */
public interface IVacationService {


    /**
     * 分页查询请假信息列表
     * @param vacationQuery
     * @return: IPage<VacationVO>
     * @Author: liushuai
     * @Date: 2022/10/20
     */
    IPage<VacationVO> listVacationPage(VacationQuery vacationQuery);

    /**
     * 新增请假信息
     * @param vacationVO
     * @Author: liushuai
     * @Date: 2022/10/20
     */
    void insertVacation(VacationVO vacationVO);
    /**
     * 修改请假信息
     * @param vacationVO
     * @Author: liushuai
     * @Date: 2022/10/20
     */
    void updateVacation(VacationVO vacationVO);
    /**
     * 根据请假信息id删除请假信息
     * @param vacationId
     * @return: R
     * @Author: liushuai
     * @Date:  2022/10/20
     */
    void deleteVacationByVacationId(Long vacationId);
    /**
     * 根据请假信息id查询请假信息
     * @param vacationId
     * @return: R<VacationVO>
     * @Author: liushuai
     * @Date: 2022/10/20
     */
    VacationVO selectVacationByVacationId(Long vacationId);


    /**
     * 发起请假流程
     * @param vacationVO
     * @return: R
     * @Author: liushuai
     * @Date: 2022/10/20
     */
    void startVacationFlow(VacationVO vacationVO);

    /**
     * 处理请假
     * @param flowDisposeVO
     * @Author: liushuai
     * @Date: 2023/1/10 13:58
     */
    void vacationFlowDispose(FlowDisposeVO flowDisposeVO);
}
